﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Tier3CommonDALGloria;

namespace DALGloria.DALGloria
{
    public class ArticuloVWDAL:Linq3tierDALBase
    {
        public void Save(VW_MAARTICULO fila)
        {
            var Tables = GetTables<VW_MAARTICULO>();
            Tables.InsertOnSubmit(fila);
            this.Save();
        }

        public bool existeTag(string codigoTag)
        {
            var Tables = GetTables<VW_MAARTICULO>();

            var query = (from c in Tables select c);

            query = query.Where(c => c.CODIGOTAG == codigoTag);

            query = query.Where(c => c.ACTIVO_INACTIVO == 'A');

            List<VW_MAARTICULO> listaPdt = query.ToList();

            if (listaPdt.Count == 0)
            {
                return false;
            }
            else {
                return true;
            }
        }

        public List<VW_LISTAENTRADA> BuscarListaEntrada()
        {
            var Tables = GetTables<VW_LISTAENTRADA>();

            var query = (from c in Tables select c);

            query = query.Where(c => c.ENTRADA_SALIDA == 'E');

            return query.ToList();
        }


        public List<VW_LISTASALIDA> BuscarListaSalida()
        {
            var Tables = GetTables<VW_LISTASALIDA>();

            var query = (from c in Tables select c);

            query = query.Where(c => c.ENTRADA_SALIDA == 'S');

            return query.ToList();
        }

        public List<string> listaNombreFuera(List<VW_TXMOVIMIENTOARTICULO> listaSalida)
        {
            List<string> listaNombre = new List<string>();

            string nombre;

            foreach (var c in listaSalida) {
                nombre = buscarNombre(Convert.ToInt32(c.CODIGOPERSONAL));
                listaNombre.Add(nombre);
            }

            return listaNombre;
        }

        private string buscarNombre(int codigopersonal)
        {
            var Tables = GetTables<VW_MAPERSONAL>();

            var query = (from c in Tables select c);

            query = query.Where(c => c.CODIGOPERSONAL == codigopersonal);

            string nombre;

            return nombre = query.ToList().First().NOMBRE;
        }

        public List<VW_MAARTICULO> listaArticulo(List<VW_TXMOVIMIENTOARTICULO> lista)
        {
            List<VW_MAARTICULO> listaArticulo = new List<VW_MAARTICULO>();

            VW_MAARTICULO articulo;

            foreach (var c in lista) {
                articulo = buscarArticulo(Convert.ToInt32(c.CODIGOARTICULO));
                listaArticulo.Add(articulo);
            }

            return listaArticulo;
        }

        private VW_MAARTICULO buscarArticulo(int codigoarticulo)
        {
            var Tables = GetTables<VW_MAARTICULO>();

            var query = (from c in Tables select c);

            query = query.Where(c => c.CODIGOARTICULO == codigoarticulo);

            return query.ToList().First();
        }

        public int RegistrarTag(string codigoInterno, string codigoTag, string descripcion)
        {
            int ingreso = 1;

            VW_MAARTICULO fila = new VW_MAARTICULO();

            int numceros = 24 - codigoTag.Length;
            string cadena = "";

            for (int i = 1; i <= numceros; i++)
            {
                cadena += "0";
            }

            fila.CODIGOTAG = cadena + codigoTag;
            //fila.DESCRIPCION = descripcion;
            fila.ACTIVO_INACTIVO = 'A';

            if (existeTag(codigoInterno))
            {
                ingreso = 0;
            }
            else
            {
                Save(fila);
            }

            return ingreso;
        }

        public int RegistrarTag(string nombre, string marca, string modelo, string CN, string PN, string SN, string MFD, string tipo, string codigoTag)
        {
            int ingreso = 1;

            VW_MAARTICULO fila = new VW_MAARTICULO();
            fila.NOMBREARTICULO = nombre;
            fila.MARCA = marca;
            fila.MODELO = modelo;
            fila.C_N = CN;
            fila.P_N = PN;
            fila.S_N = SN;
            fila.MFD = MFD;
            fila.TIPO = tipo;

            int numceros = 24 - codigoTag.Length;
            string cadena = "";

            for (int i = 1; i <= numceros; i++)
            {
                cadena += "0";
            }

            fila.CODIGOTAG = cadena + codigoTag;
            fila.ACTIVO_INACTIVO = 'A';

            if (existeTag(fila.CODIGOTAG))
            {
                ingreso = 0;
            }
            else {
                Save(fila);
            }

            return ingreso;
        }

        public List<VW_MAARTICULO> BuscarTodoArticulo()
        {
            var Tables = GetTables<VW_MAARTICULO>();

            var query = (from c in Tables select c);

            query = query.Where(c=>c.ACTIVO_INACTIVO == 'A');

            return query.ToList();
        }

        public void EliminarArticulo(int codigo)
        {
            var Tables = GetTables<VW_MAARTICULO>();

            List<VW_MAARTICULO> listaArticulo = (from c in Tables where c.CODIGOARTICULO == codigo select c).ToList();

            listaArticulo[0].ACTIVO_INACTIVO = 'I';

            Save();
        }

        public List<VW_MAARTICULO> BuscarXNombre(string nombre)
        {
            var Tables = GetTables<VW_MAARTICULO>();

            var query = (from c in Tables select c);

            if (nombre != "") {
                query = query.Where(c => c.NOMBREARTICULO == nombre);
            }

            query = query.Where(c => c.ACTIVO_INACTIVO == 'A');

            return query.ToList();
        }
    }
}
